Conventional adaptive streaming techniques for video and audio content often use bit rate as a proxy for quality and focus on streaming the highest constant bit rate below the bandwidth available to the client device. However, bit rate is only a coarse approximation for content quality. As a result, the selected bit rate is often unnecessarily high for frames and fragments that encode relatively small amounts of information, and insufficient for frames and fragments that encode large amounts of information. Not only is this an inefficient allocation of bandwidth, the resulting variability in the quality of the delivered content often becomes perceptible and negatively impacts the user experience.